package cn.itcast.demo1;

/*
   1.抽象类怎么来的？
     抽取共性方法,放到父类中,发现方法没法实现,因为每个子类对此方法的实现方式细节不一样
此时方法体说不清道不明,可以定义成抽象方法
    抽象方法所在的类一定是抽象类


   2.关键字: abstract

   3.抽象方法:
      修饰符 abstract 返回值类型 方法名(参数);

   4.抽象类:
       public  abstract class 类名{}

   5.注意:
       a.抽象方法所在的类一定是抽象类
       b.抽象类中不一定非得有抽象方法
       c.子类继承父类之后,需要重写父类中所有的抽象方法,不然编译报错
       抽象类的子类,必须重写父类中的所有抽象方法,否则,编译报错,除非该子类也是抽象类
       d.抽象类不能new对象,只能通过new子类对象调动重写方法
 */
public class Test {
    public static void main(String[] args) {
        //Animal an=new Animal();这个是错的
        //初始化抽象类
        Animal an=new Cat();
        an.name="汤姆";
        System.out.println(an.name);
        //an.Age=50;会报错
        System.out.println(an.AGE);

    }
}
